USB-C Power 3 Click
USB-C Power 3 Click demo application is developed using the NECTO Studio, ensuring compatibility with mikroSDK's open-source libraries and tools. Designed for plug-and-play implementation and testing, the demo is fully compatible with all development, starter, and mikromedia boards featuring a mikroBUS™ socket.
Click Library
- Author : Stefan Filipovic
- Date : Mar 2026.
- Type : I2C type
Software Support
Example Description
This example demonstrates the use of the USB-C Power 3 Click board for monitoring USB Type-C connection and power status. The application reads CC and power status registers, detects connection changes, and logs detailed information about VBUS state, connection type, and cable orientation.
Example Libraries
- MikroSDK.Board
- MikroSDK.Log
- Click.USBCPower3
Example Key Functions
- usbcpower3_cfg_setup This function initializes Click configuration structure to initial values.
void usbcpower3_cfg_setup(usbcpower3_cfg_t *cfg)
USB-C Power 3 configuration object setup function.
USB-C Power 3 Click configuration object.
Definition usbcpower3.h:352
- usbcpower3_init This function initializes all necessary pins and peripherals used for this Click board.
err_t usbcpower3_init(usbcpower3_t *ctx, usbcpower3_cfg_t *cfg)
USB-C Power 3 initialization function.
USB-C Power 3 Click context object.
Definition usbcpower3.h:328
- usbcpower3_ptn_read_info This function reads device identification and revision information from PTN USB PD registers.
err_t usbcpower3_ptn_read_info(usbcpower3_t *ctx)
USB-C Power 3 PTN read device information function.
- usbcpower3_ptn_read_reg_byte This function reads one byte from the selected PTN USB PD register using the block read function.
err_t usbcpower3_ptn_read_reg_byte(usbcpower3_t *ctx, uint8_t reg, uint8_t *data_out)
USB-C Power 3 PTN read register byte function.
- usbcpower3_ptn_write_reg_byte This function writes one byte to the selected PTN USB PD register using the block write function.
err_t usbcpower3_ptn_write_reg_byte(usbcpower3_t *ctx, uint8_t reg, uint8_t data_in)
USB-C Power 3 PTN write register byte function.
Application Init
Initializes the logger and USB-C Power 3 Click driver, and reads device identification information.
{
log_cfg_t log_cfg;
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
{
log_error( &logger, " PTN read info." );
for ( ; ; );
}
log_printf( &logger, " --- PTN info ---\r\n" );
log_printf( &logger, " Vendor ID: 0x%.4X\r\n", usbcpower3.info.vendor_id );
log_printf( &logger, " Product ID: 0x%.4X\r\n", usbcpower3.info.product_id );
log_printf( &logger, " Device ID: 0x%.4X\r\n", usbcpower3.info.device_id );
log_printf( &logger, " USB-C rev: 0x%.4X\r\n", usbcpower3.info.usbtypec_rev );
log_printf( &logger, " USB-PD rev/ver: 0x%.4X\r\n", usbcpower3.info.usbpd_rev_ver );
log_printf( &logger, " PD interface rev: 0x%.4X\r\n\n", usbcpower3.info.pd_interface_rev );
log_info( &logger, " Application Task " );
}
#define USBCPOWER3_MAP_MIKROBUS(cfg, mikrobus)
MikroBUS pin mapping.
Definition usbcpower3.h:297
void application_init(void)
Definition main.c:62
#define MIKROBUS_POSITION_USBCPOWER3
Definition main.c:34
@ USBCPOWER3_OK
Definition usbcpower3.h:372
Application Task
Continuously monitors CC and power status registers, detects changes, parses connection state, and controls VBUS direction (sink/source) accordingly.
{
static uint8_t cc_status_old = 0;
static uint8_t power_status_old = 0;
uint8_t cc_status = 0;
uint8_t power_status = 0;
{
}
( ( cc_status_old != cc_status ) || ( power_status_old != power_status ) ) )
{
cc_status_old = cc_status;
power_status_old = power_status;
log_printf ( &logger, "###############################\r\n" );
usbcpower3_parse_power_status ( power_status );
error_flag = usbcpower3_parse_cc_status ( &usbcpower3, cc_status );
log_printf ( &logger, "*******************************\r\n\n" );
}
else
{
Delay_ms ( 100 );
}
}
#define USBCPOWER3_PTN_REG_CC_STATUS
Definition usbcpower3.h:90
#define USBCPOWER3_PTN_REG_POWER_STATUS
Definition usbcpower3.h:91
void application_task(void)
Definition main.c:105
Note
The application automatically handles USB connection and disconnection events, including VBUS control based on detected role.
Application Output
This Click board can be interfaced and monitored in two ways:
- Application Output - Use the "Application Output" window in Debug mode for real-time data monitoring. Set it up properly by following this tutorial.
- UART Terminal - Monitor data via the UART Terminal using a USB to UART converter. For detailed instructions, check out this tutorial.
Additional Notes and Information
The complete application code and a ready-to-use project are available through the NECTO Studio Package Manager for direct installation in the NECTO Studio. The application code can also be found on the MIKROE GitHub account.